+2006-06-19 Matthias Clasen <mclasen@redhat.com>
+
+ Make transparent tray icons work. (#320034, based on a
+ patch by Dan Winship)
+
+ * gtk/gtktrayicon-x11.c (gtk_tray_icon_init): Make trayicons
+ app-paintable and non-double buffered.
+
+ * gtk/gtkrc.c (_gtk_rc_init): Give tray icons a parent-relative
+ background in the default style.
+
2006-06-19 Matthias Clasen <mclasen@redhat.com>
* gtk/updateiconcache.c: Marks strings for translation. (#314278,
+2006-06-19 Matthias Clasen <mclasen@redhat.com>
+
+ Make transparent tray icons work. (#320034, based on a
+ patch by Dan Winship)
+
+ * gtk/gtktrayicon-x11.c (gtk_tray_icon_init): Make trayicons
+ app-paintable and non-double buffered.
+
+ * gtk/gtkrc.c (_gtk_rc_init): Give tray icons a parent-relative
+ background in the default style.
+
2006-06-19 Matthias Clasen <mclasen@redhat.com>
* gtk/updateiconcache.c: Marks strings for translation. (#314278,
" text[PRELIGHT] = \"#ffffff\"\n"
"}\n"
"\n"
+ "style \"gtk-default-tray-icon-style\" {\n"
+ " bg_pixmap[NORMAL] = \"<parent>\"\n"
+ "}\n"
+ "\n"
"class \"GtkProgressBar\" style : gtk \"gtk-default-progress-bar-style\"\n"
+ "class \"GtkTrayIcon\" style : gtk \"gtk-default-tray-icon-style\"\n"
"widget \"gtk-tooltips*\" style : gtk \"gtk-default-tooltips-style\"\n"
"widget_class \"*<GtkMenuItem>*\" style : gtk \"gtk-default-menu-item-style\"\n"
"widget_class \"*<GtkMenuBar>*<GtkMenuItem>\" style : gtk \"gtk-default-menu-bar-item-style\"\n"
static void gtk_tray_icon_unrealize (GtkWidget *widget);
static gboolean gtk_tray_icon_delete (GtkWidget *widget,
GdkEventAny *event);
+static gboolean gtk_tray_icon_expose (GtkWidget *widget,
+ GdkEventExpose *event);
static void gtk_tray_icon_update_manager_window (GtkTrayIcon *icon,
gboolean dock_if_realized);
widget_class->realize = gtk_tray_icon_realize;
widget_class->unrealize = gtk_tray_icon_unrealize;
widget_class->delete_event = gtk_tray_icon_delete;
+ widget_class->expose_event = gtk_tray_icon_expose;
g_object_class_install_property (gobject_class,
PROP_ORIENTATION,
icon->priv->stamp = 1;
icon->priv->orientation = GTK_ORIENTATION_HORIZONTAL;
-
+
+ gtk_widget_set_app_paintable (GTK_WIDGET (icon), TRUE);
+ gtk_widget_set_double_buffered (GTK_WIDGET (icon), FALSE);
gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK);
}
}
}
+static gboolean
+gtk_tray_icon_expose (GtkWidget *widget,
+ GdkEventExpose *event)
+{
+ gdk_window_clear_area (widget->window, event->area.x, event->area.y,
+ event->area.width, event->area.height);
+
+ if (GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->expose_event)
+ return GTK_WIDGET_CLASS (gtk_tray_icon_parent_class)->expose_event (widget, event);
+
+ return FALSE;
+}
+
static void
gtk_tray_icon_get_orientation_property (GtkTrayIcon *icon)
{